When building an updated version of a software system (e.g., by removing faults, changing or adding functionality, porting the system to a new platform or extending interoperability), the testing team may also inadvertently change existing functionality. Sometimes, even small changes can produce unforeseen effects that lead to new failures. For example, a data element added to an array to fix another problem may cause a failure when the array is used in other contexts, or porting the software to a new platform may expose a latent fault in creating and modifying temporary files. Regression testing is a technique that seeks to address this issue by uncovering software errors through partial, incremental retesting of the modified program. By way of this approach, the appropriate minimum suite of tests needed to adequately cover the affected change is selected. Unfortunately, for large or complex software projects, there may be thousands of test cases in the test bed, where any change in the project requires the updating and maintenance of several test cases.
Based on the foregoing, there is a need for an effective, automated approach to maintaining a test bed for use in executing software testing.